package com.biodiv.miracle.ioc.context;

import com.biodiv.miracle.ioc.core.BeanFactory;
import com.biodiv.miracle.ioc.core.Event;
import com.biodiv.miracle.ioc.core.Register;
import com.biodiv.miracle.ioc.core.Resource;

/**
 * @author tianquan
 * @date 2024-09-28 下午9:58
 */
public interface ApplicationContext extends BeanFactory, Resource, Register, Event {

    /**
     * 刷新应用程序上下文。
     * 此方法通常在应用程序启动时调用，以初始化和配置应用程序上下文，
     * 包括加载Bean定义、预实例化单例Bean等操作。
     * 它确保应用程序在启动时处于一个干净、一致的状态。
     */
    void refresh();

    /**
     * 关闭应用程序上下文。
     * 此方法通常在应用程序关闭时调用，以释放应用程序上下文占用的资源，
     * 包括销毁单例Bean、释放资源等操作。
     * 它确保应用程序在关闭时能够优雅地释放资源，避免资源泄露。
     */
    void close();

}

